package com.zjsru.plan2023.oneday;

import java.util.HashSet;
import java.util.Set;

/**
 * @Author: CookLee
 * @Date: 2023/5/13
 *
 * 与对应负数同时存在的最大正整数
 *
 * 输入：nums = [-1,2,-3,3]
 * 输出：3
 * 解释：3 是数组中唯一一个满足题目要求的 k 。
 *
 * 输入：nums = [-1,10,6,7,-7,1]
 * 输出：7
 * 解释：数组中存在 1 和 7 对应的负数，7 的值更大。
 *
 * 输入：nums = [-10,8,6,7,-2,-3]
 * 输出：-1
 * 解释：不存在满足题目要求的 k ，返回 -1 。
 */
public class FindMaxK {
    
    /**
     * 哈希表
     *
     * @param nums 全国矿工工会
     * @return int
     */
    public int findMaxK(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int num:nums) {
            set.add(num);
        }
        int ans = -1;
        for (int one:set) {
            if(set.contains(-one)){
                ans = Math.max(Math.abs(one),ans);
            }
        }
        return ans;
    }
    
    /**
     * 暴力枚举
     *
     * @param nums 全国矿工工会
     * @return int
     */
    public int findMaxK1(int[] nums) {
        int ans = -1;
        for (int i:nums) {
            for (int y: nums) {
                if(i == -y){
                    ans = Math.max(ans,Math.abs(i));
                }
            }
        }
        return ans;
    }
    
    public static void main(String[] args) {
        FindMaxK findMaxK = new FindMaxK();
        int[] nums = new int[] {-9,-43,24,-23,-16,-30,-38,-30};
        System.out.println(findMaxK.findMaxK(nums));
    }
}
